硬碟是儲存系統的基本單位,昨天大致介紹了目前主流硬碟的規格,但是硬碟不是裝上去就可以用了,必須要讓你的系統或是作業系統**"看到可用的空間與格式"才行,所以今天就要來說說Partition與Format**。
昨天有提到早期硬碟是有空間限制的,主要原因在於BIOS(你要說是主機板或晶片組也行)規格的限制。一直以來電腦系統對硬碟的認識(或管理),是依據硬碟的**cylinder-head-sector (磁柱-磁頭-磁區)的數目,所以有限的BIOS定址,就限制了能讀取到的磁碟空間,也就限制了硬碟的大小。這個問題在目前的電腦都採用了擴充的定址(48bit LBA)**而獲得了解決。
硬碟空間都這麼大了,要找到放進去的資料肯定像是海底撈針一樣,所以資料可不能隨便放,必須嚴謹的安排資料儲存的位址,這就是分割(Partition)與格式化(Format)的目的啦。將一個完整的大硬碟分割成數個partition有許多好處,如說:效率,越大的連續空間,資料的搜尋越花時間;安全,若某個partition毀損,其他的partition依然得以保存;再來就是多重開機了,可以將不同的作業系統安裝在不同的partition而彼此不相影響。
Partition的原理其實很簡單,即將你所要分割的每個磁碟空間的起始與結束的cylinder位址記錄在partition table中供系統讀取判斷就可以了。但是是否可以無限制的切割partition呢?當然不行。傳統partition最多限制只能有四個,為了能夠支援多個partition,則必須將最後一個partition指定成extended格式(其餘為primary格式,而且extended只能有一個),接下來在extended中陸續增加其他logical partition,但是這些logical partition依然有數目限制的(IDE最多59個)。解決的方法就是引用新的partition規格GUID Partition Table (GPT) ,GPT支援128個primary partition,而且允許超過2TB的partition空間,這一點也是用以解決硬碟容量限制的法寶。GPT不僅提供備份的partition table,也對partition table進行CRC 32偵錯,可以充分保護partition table。因為partition table就像是座位表,儘管資料都在,但是因為不知道資料正確的位置在哪,也無法去取用它們的。目前有支援**EFI(Extensible Firmware Interface)**規格的主機板,都有支援GPT。
切割完partition之後,接著就要格式化。Format主要是給作業系統方便的。因為作業系統可以指定自己資料的讀寫基本單位,也可以針對自己個格式化來增加額外的功能。譬如說NTFS有增強安全性,使得沒有授權的用戶無法讀取,就算把硬碟拆下來裝到其他電腦也一樣;Linux系統中主要的ext3格式,還有支援日誌的功能,對於資料的復原保護更上一層樓。
*ps: 硬碟容量當然不是無限上綱啦,EFI規格解決了硬體部分的問題,但是對作業系統而言,他能否定址得到,也是硬碟容量的限制之一。像是32位元的作業系統,最大的定址空間是32bit,所以最大定址是2TB (2^32 * 512 Byte)。但是這點我到不擔心,一來作業系統已進展到64bit,而且老實說我也沒那麼多資料可以裝。^^
**ps: 透過簡單的dd工具,你也可以自己備份partition table。因為partition table記錄在硬碟的第一個磁區中,也就是**MBR(Master Boot Record)**所在的512個Byte。你可以利用dd指令將這段內容存成檔案備份起來,當哪天不幸partition table損毀時(製作多重開機時就有可能不小心遇到),再把這個檔案倒回那個位置即可,指令如下:
#備份
dd if=欲保護的磁碟代號 of=備份的檔案名稱 bs=512 count=1
#還原
dd if=備份的檔案名稱 of=欲還原的磁碟代號 bs=512 count=1
*ps: 硬碟容量當然不是無限上綱啦,EFI規格解決了硬體部分的問題,但是對作業系統而言,他能否定址得到,也是硬碟容量的限制之一。像是32位元的作業系統,最大的定址空間是32bit,所以最大定址是2TB (2^32 * 512 Byte)。但是這點我到不擔心,一來作業系統已進展到64bit,而且老實說我也沒那麼多資料可以裝。^^
==>32位元的作業系統,最大的定址空間是 32bit 指的應該是RAM(2^32B = 4GB)。
32位元的作業系統支援硬碟最大分割限制,主要應是受限於所選用的檔案系統,也許是效能及空間使用率或其他考量。
單純以定址來講,在 16bit 的 DOS 下是可依照 EFI 來存取 2^(48+9) Bytes 的空間。